home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-04-20 | 52.1 KB | 1,347 lines |
-
-
-
-
-
-
- Network Working Group D. Waitzman
- Request For Comments: 1075 C. Partridge
- BBN STC
- S. Deering
- Stanford University
- November 1988
-
- Distance Vector Multicast Routing Protocol
-
- 1. Status of this Memo
-
- This RFC describes a distance-vector-style routing protocol for
- routing multicast datagrams through an internet. It is derived from
- the Routing Information Protocol (RIP) [1], and implements
- multicasting as described in RFC-1054. This is an experimental
- protocol, and its implementation is not recommended at this time.
- Distribution of this memo is unlimited.
-
- 2. Introduction
-
- A draft standard for multicasting over IP networks now exists [2],
- but no routing protocols to support internetwork multicasting are
- available. This memo describes an experimental routing protocol,
- named DVMRP, that implements internetwork multicasting. DVMRP
- combines many of the features of RIP [1] with the Truncated Reverse
- Path Broadcasting (TRPB) algorithm described by Deering [3].
-
- DVMRP is an "interior gateway protocol"; suitable for use within an
- autonomous system, but not between different autonomous systems.
- DVMRP is not currently developed for use in routing non-multicast
- datagrams, so a router that routes both multicast and unicast
- datagrams must run two separate routing processes. DVMRP is designed
- to be easily extensible and could be extended to route unicast
- datagrams.
-
- DVMRP was developed to experiment with the algorithms in [3]. RIP
- was used as the starting point for the development because an
- implementation was available and distance vector algorithms are
- simple, as compared to link-state algorithms [4]. In addition, to
- allow experiments to traverse networks that do not support
- multicasting, a mechanism called "tunneling" was developed.
-
- The multicast forwarding algorithm requires the building of trees
- based on routing information. This tree building needs more state
- information than RIP is designed to provide, so DVMRP is much more
- complicated in some places than RIP. A link-state algorithm, which
- already maintains much of the state needed, might prove a better
- basis for Internet multicasting routing and forwarding.
-
-
-
- Waitzman, Partridge & Deering [Page 1]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- DVMRP differs from RIP in one very important way. RIP thinks in
- terms of routing and forwarding datagrams to a particular
- destination. The purpose of DVMRP is to keep track of the return
- paths to the source of multicast datagrams. To make explanation of
- DVMRP more consistent with RIP, the word "destination" is used
- instead of the more proper "source", but the reader must remember
- that datagrams are not forwarded to these destinations, but originate
- from them.
-
- This memo is organized into the following sections:
- - A description of DVMRP is presented.
- - Tunnels are explained.
- - The routing algorithm is shown.
- - The forwarding algorithm is shown.
- - The various time values are listed.
- - Configuration information is specified.
-
- This memo does not analyze distance-vector routing, nor fully explain
- the distance-vector algorithm; see [1] for more information on these
- topics. The process or processes that perform the routing and
- forwarding functions are called "routers" in this memo.
-
- 3. Protocol Description
-
- DVMRP uses the Internet Group Management Protocol (IGMP) to exchange
- routing datagrams [2].
-
- DVMRP datagrams are composed of two portions: a small, fixed length
- IGMP header, and a stream of tagged data.
-
- The fixed length IGMP header of DVMRP messages is:
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Version| Type | Subtype | Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The version is 1.
-
- The type for DVMRP is 3.
-
- The subtype is one of:
-
- 1 = Response; the message provides routes to some destination(s).
- 2 = Request; the message requests routes to some destination(s).
- 3 = Non-membership report; the message provides non-membership
- report(s).
-
-
-
- Waitzman, Partridge & Deering [Page 2]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- 4 = Non-membership cancellation; the message cancels previous
- non-membership report(s).
-
- The checksum is the 16-bit one's complement of the one's complement
- sum of the entire message, excluding the IP header. For computing
- the checksum, the checksum field is zeroed.
-
- The rest of the DVMRP message is a stream of tagged data. The reason
- for using a stream of tagged data is to provide easy extensibility
- (new commands can be developed by adding new tags) and to reduce the
- amount of redundant data in a message. The elements in the stream,
- called commands, are multiples of 16 bits, for convenient alignment.
- The commands are organized as an eight bit command numeric code, with
- at least an eight bit data portion. Sixteen-bit alignment of all
- commands is required.
-
- A message that has an error in it will be discarded at the point in
- processing where the error is detected. Any state changed due to the
- message contents before the error will not be restored to its
- previous values.
-
- Certain commands have default values defined in their specification.
- As the defaults may be changed as the protocol is developed further,
- a cautious implementation will not send out messages that depend on
- defaults.
-
- The length of DVMRP messages is limited to 512 bytes, excluding the
- IP header.
-
- 3.1 NULL Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 0 | | Ignored |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
- Description: The NULL command can be used to provide additional
- alignment or padding to 32 bits.
-
- 3.2 Address Family Indicator (AFI) Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 2 | | family |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
-
-
-
-
-
- Waitzman, Partridge & Deering [Page 3]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- Values for family:
-
- 2 = IP address family, in which addresses are 32 bits long.
-
- Default: Family = 2.
-
- Description: The AFI command provides the address family for
- subsequent addresses in the stream (until a different AFI command is
- given).
-
- It is an error if the receiver does not support the address family.
-
- 3.3 Subnetmask Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 3 | | count |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
- Additional argument, with AFI = IP:
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Subnet mask |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Count is 0 or 1.
-
- Default: Assume that following routes are to networks, and use a mask
- of the network mask of each route's destination.
-
- Description: The Subnetmask command provides the subnet mask to use
- for subsequent routes. There are some requirements on the bits in
- the subnetmask: bits 0 through 7 must be 1, and all of the bits must
- not be 1.
-
- If the count is 0, then no subnet mask applies, assume that the
- following routes are to networks, and use a mask of the network mask
- of each route's destination. If count is 1, then a subnet mask
- should be in the data stream, of an appropriate size given the
- address family.
-
- It is an error for count not to equal 0 or 1.
-
- Subnetmasks should not be sent outside of the appropriate network.
-
- See [6] for more information regarding IP subnetting.
-
-
-
- Waitzman, Partridge & Deering [Page 4]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- 3.4 Metric Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 4 | | value |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
- Value is the metric, as an unsigned value ranging from 1 to 255.
-
- Default: None.
-
- Description: The metric command provides the metric to subsequent
- destinations. The metric is relative to the router that sent this
- DVMRP routing update.
-
- It is an error for metric to equal 0.
-
- 3.5 Flags0 Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 5 | | value |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
- Meaning of bits in value:
-
- Bit 7: Destination is unreachable.
- Bit 6: Split Horizon concealed route.
-
- Default: All bits zero.
-
- Description: The flags0 command provides a way to set a number of
- flags. The only defined flags, bits 6 and 7, can be used to provide
- more information about a route with a metric of infinity. A router
- that receives a flag that it does not support should ignore the flag.
- The command is called flags0 to permit the definition of additional
- flag commands in the future (flags1, etc.).
-
- This is an experimental command, and may be changed in the future.
-
- 3.6 Infinity Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 6 | | value |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
- Value is the infinity, as an unsigned value ranging from 1 to 255.
-
-
-
- Waitzman, Partridge & Deering [Page 5]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- Default: Value = 16.
-
- Description: The infinity command defines the infinity for subsequent
- metrics in the stream.
-
- It is an error for infinity to be zero, or less than the current
- metric.
-
- 3.7 Destination Address (DA) Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 7 | | count |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
- Array of 'count' additional arguments, with AFI = IP:
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Destination Address1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Destination Address2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Count is the number of addresses supplied, from 1 to 255. The length
- of the addresses depends upon the current address family. The number
- of addresses supplied is subject to the message length limitation of
- 512 bytes.
-
- Default: None.
-
- Description: The DA command provides a list of destinations. While
- this format can express routes to hosts, the routing algorithm only
- supports network and subnetwork routing. The current metric,
- infinity, flags0 and subnetmask, when combined with a single
- destination address, define a route. The current metric must be less
- than or equal to the current infinity.
-
- It is an error for count to equal 0.
-
-
-
-
-
-
-
- Waitzman, Partridge & Deering [Page 6]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- 3.8 Requested Destination Address (RDA) Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 8 | | count |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
- Array of 'count' additional arguments, with AFI = IP:
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Requested Destination Address1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Requested Destination Address2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Count is the number of addresses supplied, from 0 to 255. The length
- of the addresses depends upon the current address family. The number
- of addresses supplied is subject to the message length limitation of
- 512 bytes.
-
- Default: None.
-
- Description: The RDA command provides a list of destinations for whom
- routes are requested. A routing request for all routes is encoded by
- using a count = 0.
-
- 3.9 Non Membership Report (NMR) Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 9 | | count |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
- Array of 'count' additional arguments, with AFI = IP:
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Multicast Address1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
- Waitzman, Partridge & Deering [Page 7]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Hold Down Time1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Multicast Address2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Hold Down Time2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Count is the number of Multicast Address and Hold Down Time pairs
- supplied, from 1 to 255. The length of the addresses depends upon
- the current address family. The number of pairs supplied is subject
- to the message length limitation of 512 bytes.
-
- Default: None.
-
- Description: The NMR command is experimental, and has not been tested
- in an implementation. Each multicast address and hold down time pair
- is called a non-membership report. The non-membership report tells
- the receiving router that the sending router has no descendent group
- members in the given group. Based on this information the receiving
- router can stop forwarding datagrams to the sending router for the
- particular multicast address(es) listed. The hold down time
- indicates, in seconds, how long the NMR is valid.
-
- It is an error for count to equal 0.
-
- The only other commands in a message that has NMR commands can be the
- AFI, flags0, and NULL commands. No relevant flags for the flags0
- command are currently defined, but that may change in the future.
-
- 3.10 Non Membership Report Cancel (NMR Cancel) Command
-
- Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- | 10 | | count |
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
-
-
-
-
-
- Waitzman, Partridge & Deering [Page 8]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- Array of 'count' additional arguments, with AFI = IP:
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Multicast Address1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Multicast Address2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Count is the number of Multicast Addresses supplied, from 1 to 255.
- The length of the addresses depends upon the current address family.
- The number of addresses supplied is subject to the message length
- limitation of 512 bytes.
-
- Default: None.
-
- Description: The NMR Cancel command is experimental, and has not been
- tested in an implementation. For each multicast address listed, any
- previous corresponding non-membership reports are canceled. When
- there is no corresponding non-membership report for a given multicast
- address, the Cancel command should be ignored for that multicast
- address.
-
- It is an error for count to equal 0.
-
- The only other commands in a message that has NMR Cancel commands can
- be the AFI, flags0, and NULL commands. No relevant flags for the
- flags0 command are currently defined, but that may change in the
- future.
-
- 3.12 Examples (with bytes in '{}'), not including the message header:
-
- 3.12.1 Supplying a single route to the IP address 128.2.251.231 with
- a metric of 2, an infinity of 16, a subnetmask of 255.255.255.0:
-
- Subtype 1,
- AFI 2, Metric 2, Infinity 16, Subnet Mask 255.255.255.0
- {2} {2} {4} {2} {6} {16} {3} {1} {255} {255} {255} {0}
-
- DA Count=1 [128.2.251.231]
- {7} {1} {128} {2} {251} {231}
-
-
-
-
-
- Waitzman, Partridge & Deering [Page 9]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- 3.12.2 Supplying a route to the IP addresses 128.2.251.231 and
- 128.2.236.2 with a metric of 2, an infinity of 16, a subnetmask of
- 255.255.255.0:
-
- Subtype 1,
- AFI 2, Metric 2, Infinity 16, Subnet Mask 255.255.255.0
- {2} {2} {4} {2} {6} {16} {3} {1} 255} {255} {255} {0}
-
- DA Count=2 [128.2.251.231] [128.2.236.2]
- {7} {1} {128} {2} {251} {231} {128} {2} {236} {2}
-
- 3.12.3 Request for all routes to IP destinations.
-
- Subtype 2, AFI 2, RDA Count = 0
- {2} {2} {8} {0}
-
- 3.12.4 Non Membership Report for groups 224.2.3.1 and 224.5.4.6 with a
- hold down time of 20 seconds, and group 224.7.8.5 with a hold down
- time of 40 seconds.
-
- Subtype 3,
- AFI 2, NMR Count = 3 [224.2.3.1, 20]
- {2} {2} {10} {3} {224} {2} {3} {1} {0} {0} {0} {20}
-
- [224.5.4.6, 20] [224.7.8.5, 40]
- {224} {5} {4} {6} {0} {0} {0} {20} {224} {7} {8} {5} {0} {0} {0} {40}
-
- 3.13 Summary of Commands
-
-
- Value Name Other commands allowed in same message
- ----- ---- ---------------------------------------
- 0 Null Null, AFI, Subnetmask, Metric, Flags0,
- Infinity, DA, RDA, NMR, NMR-cancel
-
- 2 AFI Null, AFI, Subnetmask, Metric, Flags0,
- Infinity, DA, RDA, NMR, NMR-cancel
-
- 3 Subnetmask Null, AFI, Subnetmask, Metric, Flags0,
- Infinity, DA, RDA
-
- 4 Metric Null, AFI, Subnetmask, Metric, Flags0,
- Infinity, DA
-
- 5 Flags0 Null, AFI, Subnetmask, Metric, Flags0,
- Infinity, DA
-
-
-
-
-
- Waitzman, Partridge & Deering [Page 10]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- 6 Infinity Null, AFI, Subnetmask, Metric, Flags0,
- Infinity, DA
-
- 7 DA Null, AFI, Subnetmask, Metric, Flags0,
- Infinity, DA
-
- 8 RDA Null, AFI, Subnetmask, Flags0, RDA
-
- 9 NMR Null, AFI, Flags0, NMR
-
- 10 NMR-cancel Null, AFI, Flags0, NMR-cancel
-
-
- 4. Tunnels
-
- A tunnel is a method for sending datagrams between routers separated
- by gateways that do not support multicasting routing. It acts as a
- virtual network between two routers. For instance, a router running
- at Stanford, and a router running at BBN might be connected with a
- tunnel to allow multicast datagrams to traverse the Internet. We
- consider tunnels to be a transitional hack.
-
- Tunneling is done with a weakly encapsulated normal multicasted
- datagram. The weak encapsulation uses a special two element IP loose
- source route [5]. (This form of encapsulation is preferable to
- "strong" encapsulation, i.e., prepending an entire new IP header,
- because it does not require the tunnel end-points to know each
- other's maximum reassembly buffer size. It also has the benefit of
- correct behavior of the originator's time-to-live value and any other
- IP options present.)
-
- A tunnel has a local end-point, remote end-point, metric, and
- threshold associated with it. The routers at each end of the tunnel
- need only agree upon the local and remote end-points. See section 8
- for information on how tunnels are configured. Because the number of
- intermediate gateways between the end-points of a tunnel is unknown,
- additional research is needed to determine appropriate metrics and
- thresholds.
-
- To send a datagram on a tunnel, the following occurs:
-
- - A null IP option is inserted into the datagram. This provides
- preferred alignment for the loose source route IP option.
-
- - A two element loose source route IP option is inserted into
- the datagram.
-
- - The source route pointer is set to point to the second element
-
-
-
- Waitzman, Partridge & Deering [Page 11]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- in the source route.
-
- - The first element in the source route is replaced with the
- address of the originating host (the original IP source
- address).
-
- - The second element in the source route is replaced with the
- multicast destination address provided by the originating host
- (the original IP destination address).
-
- - The IP source address is replaced with the address of the
- router's appropriate outgoing physical interface (the local
- tunnel end-point).
-
- - The IP destination address is replaced with an address of the
- remote router (the remote tunnel end-point).
-
- - The datagram is transmitted to the remote router using
- non-multicast routing algorithms.
-
- Intermediate, non-multicast gateways will route the tunneled datagram
- to the remote tunnel end-point. Because the datagram's IP source
- address has been replaced with the address of the local tunnel end-
- point, ICMP error messages will go to the originating multicast
- router. This behavior is desired, because a host that sends a
- multicast datagram, which a multicast router decides to tunnel,
- should not be aware of the use of the tunnel. If the datagram's IP
- source address were not changed when encapsulating the datagram, any
- ICMP errors would be sent to the originating host.
-
- When the remote tunnel end-point receives the tunneled datagram, the
- following occurs:
-
- - The IP source address is replaced with the first element in the
- loose source route.
-
- - The IP destination address is replaced with the second element
- in the loose source route.
-
- - The null option and the loose source route option are removed
- from the datagram. This is needed because a host should not
- be able to tell that it has received a datagram that was sent
- through a tunnel.
-
- Because no specific network is associated with a tunnel, there are no
- local group memberships to be tracked for a tunnel. The only
- neighbor on a tunnel can be the remote end-point. Routing messages
- should be exchanged through tunnels, but a route is not created for a
-
-
-
- Waitzman, Partridge & Deering [Page 12]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- tunnel. The routing messages should be sent as unicast datagrams
- directly to the remote tunnel end-point; they should not use an IP
- loose source route.
-
- Justification for using the loose source route and record option for
- tunneling:
-
- We considered defining our own IP option to handle tunneling, but
- we are worried that intermediate gateways do not transparently
- pass IP options that are unknown to them. Datagrams using a new
- option would not traverse the Internet. It would be better for us
- if we could create a new IP option, but it won't work presently.
- Recall that this is a transition design to allow us to experiment
- in the current environment.
-
- The tunneled packet containing the LSRR option has the following
- features:
-
- Field Value
- ----- --------------------
- src address = src gateway address
- dst address = dst gateway address
- LSRR pointer = points to LSRR address 2
- LSRR address 1 = src host
- LSRR address 2 = multicast destination
-
- Two questions raised about using the LSRR option for tunnels are
- "Can intermediate gateways ignore the option?", and "Can the
- destination gateway properly detect that the LSRR is used for a
- tunnel?".
-
- When an intermediate gateway receives a datagram, it examines the
- destination address. For a tunneled datagram, the destination
- address will not match an address of the receiving gateway.
- Therefore, the LSRR option will not be examined, and the
- intermediate gateway will forward the datagram on to its next hop
- for the destination address.
-
- When the destination gateway receives a datagram, it notes that
- the datagram destination address matches one of its own address.
- It will then look at the next LSRR option address, since the
- source route is not exhausted. That address is a multicast
- address. Since hosts are forbidden from putting multicast
- addresses into source routes, the gateway can infer that the LSRR
- is for tunneling. The weakness here is that perhaps there is some
- other meaning for the multicast address in the LSRR. No other
- meaning is currently defined.
-
-
-
-
- Waitzman, Partridge & Deering [Page 13]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- If a tunneled datagram is by error addressed to a destination
- gateway that does not support multicasting, then the destination
- gateway will try to find a route to the multicast address. This
- will fail, and an ICMP destination unreachable error message will
- be sent to the tunneled datagram's source. Since the source
- address in the tunneled datagram has been adjusted to be the
- address of the source multicast gateway, the ICMP errors will not
- go to the originating host, which has no knowledge of tunnels.
-
- 5. Routing Algorithm
-
- This section provides a terse description of the distance-vector
- routing algorithm. See [1] for more information.
-
- While DVMRP can express routes to individual hosts, the forwarding
- and routing algorithms only support network and subnetwork routing.
-
- In the discussion below, the term "virtual interface" is used to
- refer to a physical interface or a tunnel local end-point. A
- physical interface is a network interface, for instance, an Ethernet
- card. A route to a destination will be through a virtual interface.
- The term "virtual network" is used to refer to a physical network or
- a tunnel, with the qualification that routes only reference physical
- networks.
-
- The TRPB algorithm forwards multicast datagrams by computing the
- shortest (reverse) path tree from the source (physical) network to
- all possible recipients of the datagram. Each multicast router must
- determine its place in the tree, relative to the particular source,
- and then determine which of its virtual interfaces are in the
- shortest path tree. The datagram is forwarded out these virtual
- interfaces. The process of excluding virtual interfaces not in the
- shortest path tree is called "pruning."
-
- Consider a virtual network. Using Deering's terminology [3], a
- router is called the "parent" of the virtual network if that router
- is responsible for forwarding datagrams onto that virtual network
- through its connecting virtual interface. The virtual network can
- also be considered a "child" virtual network of the router. Using
- the child information, routers can do Reverse Path Broadcasting
- (RPB).
-
- Unnecessary datagrams may still be sent onto some networks, because
- there might not be any recipients for those datagrams on the
- networks. There are two kinds of recipients: hosts that are members
- of a particular multicast group, and multicast routers. If no
- multicast routers on a virtual network consider that virtual network
- uptree to a given source, then that virtual network is a "leaf"
-
-
-
- Waitzman, Partridge & Deering [Page 14]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- network. If a network is a leaf for a given source, and there are no
- members of a particular group on the network, then there are no
- recipients for datagrams from the source to the group on that
- network. That network's parent router can forgo sending those
- datagrams on that network, or "truncate" the shortest path tree. The
- algorithm that tracks and uses this information is the Truncated
- Reverse Path Broadcasting (TRPB) algorithm.
-
- Determining which virtual networks are leaves is not simple. If any
- neighboring router considers a given virtual network in the path to a
- given destination, then the virtual network is not a leaf.
- Otherwise, it is a leaf. This is a voting function. If a route,
- with a metric poisoned by split horizon processing, is sent by some
- router, then that router uses that virtual network as the uptree path
- for that route (i.e. that router votes that the virtual network is
- not a leaf relative to the route's destination). Since the number of
- routers on a virtual network is dynamic, and since all received
- routing updates are not kept by routers, a heuristic is needed to
- determine when a network is a leaf. DVMRP samples the routing
- updates on a virtual interface while a hold down timer is running,
- which is for a time period of LEAF_TIMEOUT seconds. There is one
- hold down timer per virtual interface. If a route is received with a
- metric poisoned by split horizon processing while the hold down timer
- is running, or at any other time, then the appropriate virtual
- interface for that route is "spoiled"-- it is not a leaf. For every
- route, any virtual interface that was not spoiled by the time the
- hold down timer expires is considered a leaf.
-
- For a description of an even better forwarding algorithm, the Reverse
- Path Multicasting algorithm, see [3].
-
- A route entry should have the following in it:
- - Destination address (a source of multicast datagrams) *
- - Subnet mask of the destination address *
- - Next-hop router to the destination address
- - Virtual interface to the next-hop router *
- - List of child virtual interfaces *
- - List of leaf virtual interfaces *
- - A dominant router address for each virtual interface
- - A subordinate router address for each virtual interface
- - Timer
- - Set of flags that indicate the state of the entry
- - Metric
- - Infinity
-
- The lines that are marked with '*' indicate fields that are directly
- used by the forwarding algorithm.
-
-
-
-
- Waitzman, Partridge & Deering [Page 15]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- The lists of child and leaf interfaces can be implemented as bitmaps.
-
- 5.1 Sending Routing Messages
-
- DVMRP routing messages can be used for three basic purposes: to
- periodically supply all routing information, to gratuitously supply
- routing information for recently changed routes, or supply some or
- all routes in response to a request.
-
- Routing messages sent to physical interfaces should have an IP TTL of
- 1.
-
- A number of timeouts and rates are used by the routing and forwarding
- algorithms. See section 6 for their values.
-
- Rules for when to send routing messages:
-
- - Every FULL_UPDATE_RATE seconds a router should send out
- DVMRP messages with all of its routing information to all of its
- virtual interfaces. To prevent routers from synchronizing when
- they send updates, a real-time timer must be used.
-
- - Whenever a route is changed, a routing update should be sent
- for that route. Some delay must occur between triggered
- updates to avoid flooding the network with triggered updates;
- intervals of TRIGGERED_UPDATE_RATE seconds is suggested.
-
- - A request for all routes should be sent on all virtual
- interfaces when an DVMRP router is restarted.
-
- - If possible, when a DVMRP router is about to terminate
- execution, it should send out DVMRP messages with metrics
- equal to infinity for all of its routes, on all virtual
- interfaces.
-
- When sending to routers connected via networks that support
- multicasting, the messages should be multicast to address 224.0.0.4.
- Therefore, routers must listen to multicast address 224.0.0.4 on
- every physical interface that supports multicasting. If multicasting
- isn't supported, broadcasting can be used. As already mentioned,
- routing updates to tunnels should be sent as unicast datagrams to the
- remote end-point of the tunnel.
-
- When sending routing messages, except in response to a specific route
- request (via RDA command with a non-zero count), poisoned split
- horizon processing must be done. This means that given a route that
- uses network X, routing updates sent to network X must include that
- route with the metric equal to the infinity and should include the
-
-
-
- Waitzman, Partridge & Deering [Page 16]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- appropriate flag set in a FLAGS0 command.
-
- Poisoned split horizon is one way to reduce the likelihood of routing
- loops. Another method, not available in RIP, is to choose a better
- infinity in a route. For routes propagated in a small, but well
- connected, network an infinity smaller than 16 might be better. The
- smaller the infinity, the less time a counting-to-infinity event will
- take. In traversing a wide internet, an infinity of 16 might be too
- small. At the cost of a longer counting-to-infinity event, the
- infinity can be increased.
-
- One concept in Internet Multicasting is to use "thresholds" to
- restrict which multicast datagrams exit a network. Multicast routers
- on the edge of a subnetted network or autonomous system may require a
- datagram to have large TTL to exit a network. This mechanism keeps
- most multicast datagrams within the network, reducing external
- traffic. An application that wants to multicast outside of its
- network would need to give its multicast datagrams at least a TTL of
- the sum of the threshold and the distance to the edge of the network
- (assuming TTL is used as a hop count within the network). A
- configuration option should allow specifying the threshold for both
- physical interfaces and tunnels.
-
- When a router is started, it must send out a request for all routes
- on each of its virtual interfaces. The request is a message that has
- an RDA command with a count equal to 0 in it.
-
- 5.2 Receiving Routing Messages
-
- A router must know the virtual interface that a routing message
- arrived on. Because the routing message may be addressed to the
- all-multicast-routers IP address, and because of tunnels, the
- incoming interface can not be identified merely by examining the
- message's IP destination address
-
- For each route expressed in a routing message, the following must
- occur:
-
- IF a metric was given for the route:
- THEN add in the metric of the virtual interface that the message
- arrived on.
-
- Lookup the route's destination address in the routing tables.
-
- IF the route doesn't exist in the tables:
- THEN try to find a route to the same network in the routing
- tables.
- IF that route exists in the tables:
-
-
-
- Waitzman, Partridge & Deering [Page 17]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- THEN IF this route came from the same router as the router
- that the found route came from:
- THEN CONTINUE with next route.
- IF route doesn't have a metric of infinity:
- THEN add the route to the routing tables.
- CONTINUE with next route.
-
- IF this route came from the same router as the router that the found
- route came from:
- THEN clear the route timer.
- IF a metric was received, and it is different than the found
- route's metric:
- THEN change the found route to use the new metric and
- infinity.
- IF the metric is equal to the infinity:
- THEN set the route timer to the
- EXPIRATION_TIMEOUT.
- CONTINUE with next route.
- IF the received infinity does not equal the found route's
- infinity:
- THEN change the found route's infinity to be the received
- infinity.
- change the found route's metric to be the minimum of
- the received infinity and the found route's metric.
- ELSE IF a metric was received, and (it is less than the found
- route's metric or (the route timer is at least halfway to the
- EXPIRATION_TIMEOUT and the found route's metric equals the
- received metric, and the metric is less than the received
- infinity)):
- THEN change the routing tables to use the received route.
- clear the route timer.
- CONTINUE with next route.
-
- 5.3 Neighbors
-
- A list should be kept of the neighboring multicast routers on every
- attached network. The information can be derived by the DVMRP
- routing messages that are received. A neighbor that has not been
- heard from in NEIGHBOR_TIMEOUT seconds should be considered to be
- down.
-
- 5.4 Local Group Memberships
-
- As required by [2], a multicast router must keep track of group
- memberships on the multicast-capable networks attached to it. Every
- QUERY_RATE seconds an IGMP membership request should be sent to the
- All Hosts multicast address (224.0.0.1) on each network by a
- designated router on that network. The IGMP membership request will
-
-
-
- Waitzman, Partridge & Deering [Page 18]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- cause hosts to respond with IGMP membership reports after a small
- delay. Hosts will send the report for a group to the group's
- multicast address.
-
- The membership requests should have an IP TTL of 1.
-
- The routers on a network elect or "designate" a single router to do
- the queries. The designated router is the router with the lowest IP
- address on that network. Upon startup a router considers itself to
- be the designated router until it learns (presumably through routing
- messages) of a router with a lower address. To learn about the group
- members present on a network at startup, a router should multicast a
- number of membership requests, separated by a small delay. We
- suggest sending three requests separated by four seconds.
-
- The multicast router must receive all datagrams sent to all multicast
- addresses. Upon receiving an IGMP membership report for a group from
- an interface, it must either record the existence of that group on
- the interface and record the time, or update the time if the group is
- already recorded. The recorded group memberships must be timed-out.
- If a group member report is not received for a recorded group after
- MEMBERSHIP_TIMEOUT seconds, the recorded group should be deleted.
-
- 6. Forwarding Algorithm
-
- The section describes the multicast forwarding algorithm and the
- state that must be kept for the algorithm.
-
- The forwarding algorithm is applied to determine how multicast
- datagrams arriving on a physical interface or a tunnel should be
- handled. If multicast datagrams were flooded, a datagram received on
- one virtual interface would be forwarded out of every other virtual
- interface. Because of redundant paths in the internet, datagrams
- would be duplicated. The child and leaf information, that the
- routing algorithm supplies, is used to prune branches in the tree to
- all possible destinations.
-
- In route entries, there is a dominant router address for each virtual
- interface. This address is the address of some router that has a
- route with a lower metric (and whose metric does not equal infinity)
- to the destination, on that virtual interface. The dominant router
- address is not set for the next-hop virtual interface.
-
- Also in route entries, there is a subordinate router address for each
- virtual interface. This address is the address of some router that
- considers this router to be the parent of the virtual network.
- Therefore, the subordinate router address is not set for a virtual
- interface to a leaf network.
-
-
-
- Waitzman, Partridge & Deering [Page 19]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- The algorithm for manipulating the children and leaf lists in route
- entries is:
-
- Upon router startup:
- Create a route entry for each virtual interface, with:
- - all other virtual interfaces in its child list,
- - an empty leaf list,
- - no dominant router addresses, and
- - no subordinate router addresses.
- Start a hold down timer for each virtual interface, with
- a value of LEAF_TIMEOUT.
-
- Upon receiving a new route:
- Create the route entry, with:
- - all virtual interfaces, other than the one on which the
- new route was received, in its child list,
- - empty leaf list,
- - no dominant router addresses, and
- - no subordinate router addresses.
- Start the hold down timer for all virtual interfaces, other
- than the one on which the new route was received, with a
- value of LEAF_TIMEOUT.
-
- Upon receiving a route on virtual interface V from neighbor N with a
- lower metric than the one in the routing table (or the same metric as
- the one in the routing table, if N's address is less than my address
- for V), for that route:
- If V is in the child list, delete V from the child list.
- If there is no dominant router for V and if V is not (now) the
- next-hop virtual interface, record N as the dominant router.
-
- Upon receiving a route on virtual interface V from neighbor N with a
- larger metric than the one in the routing table (or the same metric
- as the one in the routing table, if N's address is greater than my
- address for V), for that route:
- If N is the dominant router for V, delete N as the dominant router
- and add V to the child list.
-
- Upon receiving a route from neighbor N on virtual interface V with a
- metric equal to infinity (the split horizon flag should also be set),
- for that route:
- If V is in the leaf list, delete V from the leaf list.
- If there is no subordinate router for V, record N as the
- subordinate router.
-
- Upon receiving a route from neighbor N on virtual interface V with a
- metric other than infinity (and no split horizon flag), for that
- route:
-
-
-
- Waitzman, Partridge & Deering [Page 20]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- If N is the subordinate router for V, delete N as the subordinate
- router and start the hold down timer for V.
-
- Upon timer expiration for a virtual interface (V), for each route:
- If there is no subordinate router for V, add V to the leaf list.
-
- Upon failure of neighbor N on virtual interface V, for each route:
- If N is the dominant router for V, delete N as the dominant router
- and add V to the child list.
- If N is the subordinate router for V, delete N as the subordinate
- router and start the hold down timer for V.
-
- The forwarding algorithm is:
-
- IF the IP TTL is less than 2:
- THEN CONTINUE with next datagram.
-
- find the route to the source of the IP datagram.
-
- IF no route exists:
- THEN CONTINUE with next datagram.
-
- IF the datagram was not received on the next-hop virtual interface
- for the route:
- THEN CONTINUE with next datagram.
-
- IF the datagram is tunneled:
- THEN replace the datagram's source address with the first address
- in the IP loose source route.
- replace the datagram's destination address with the second
- address in the IP loose source route.
- delete the loose source route and the null option from the
- datagram and adjust the IP header length fields to reflect
- the deletion.
-
- If the datagram destination is group 224.0.0.0 or group 224.0.0.1:
- THEN CONTINUE with next datagram.
-
- FOR each virtual interface V
- DO IF V is in the child list for the source of the datagram:
- THEN IF V is not in the leaf list for the source
- OR there are members of the destination group on V:
- THEN IF the IP TTL is greater then V's threshold:
- THEN subtract 1 from the IP TTL
- forward the datagram out V
-
-
-
-
-
-
- Waitzman, Partridge & Deering [Page 21]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- 7. Time Values
-
- This section contains a list of the various rates and timeouts, their
- meanings, and their values. All values are in seconds.
-
- How dynamic the routing environment is effects the following rates.
- A lower rate will allow quicker adaptation to a change in the
- environment, at the cost of wasting network bandwidth.
-
- FULL_UPDATE_RATE = 60
- - How often routing messages containing complete routing
- tables are sent.
-
- TRIGGERED_UPDATE_RATE = 5
- - How often triggered routing messages may be sent out.
-
- Raising the following rates and timeouts may increase the time that
- packets may be forwarded to a virtual interface unnecessarily.
-
- QUERY_RATE = 120
- - How often local group membership is queried.
-
- MEMBERSHIP_TIMEOUT = 2 * QUERY_RATE + 20
- - How long a local group membership is valid without
- confirmation.
-
- LEAF_TIMEOUT = 2 * FULL_UPDATE_RATE + 5
- - How long the hold down timer is for a virtual interface.
-
- Increasing the following timeouts will increase the stability of the
- routing algorithm, at the cost of slower reactions to changes in the
- routing environment.
-
- NEIGHBOR_TIMEOUT = 4 * FULL_UPDATE_RATE
- - How long a neighbor is considered up without confirmation.
- This is important for timing out routes, and for setting
- the children and leaf flags.
-
- EXPIRATION_TIMEOUT = 2 * FULL_UPDATE_RATE
- - How long a route is considered valid without confirmation.
- When this timeout expires, packets will no longer be
- forwarded on the route, and routing updates will consider
- this route to have a metric of infinity.
-
- GARBAGE_TIMEOUT = 4 * FULL_UPDATE_RATE
- - How long a route exists without confirmation. When this
- timeout expires, routing updates will no longer contain any
- information on this route, and the route will be deleted.
-
-
-
- Waitzman, Partridge & Deering [Page 22]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- 8. Configuration options
-
- A router should be configurabled with the following information:
-
- - Tunnel descriptions: local end-point, remote end-point, metric, and
- threshold. If no threshold is provided, the metric should be used
- as the default threshold.
-
- - For a physical interface: metric, infinity, threshold and
- subnetwork mask. If no threshold is provided, the metric should be
- used as the default threshold.
-
- 9. Conclusion
-
- This memo has presented DVMRP, an extensible distance-vector-style
- routing protocol, and a TRPB routing algorithm. An implementation of
- the ideas presented in this document has been done, and is being
- tested.
-
- The added features in DVMRP, as compared to RIP, give it flexibility
- at the cost of more complex processing. DVMRP still has the
- disadvantages of being a distance-vector algorithm. Because link-
- state algorithms maintain much of the state information that DVMRP
- has to maintain in excess of what RIP needs, a multicast link-state
- routing protocol should be developed.
-
- The TRPB algorithm can cause unneeded datagrams to be sent. The
- Reverse Path Multicasting algorithm (RPM) [3] might be a better
- algorithm. The NMR and NMR-cancel DVMRP messages are designed to
- support RPM. Further research is needed on this topic.
-
- 10. Acknowledgements
-
- We would like to thank Robb Foster, Alan Dahlbom, Ross Callon, and
- the IETF Host Working Group for their ideas.
-
- 11. Bibliography
-
- [1] Hedrick, C., "Routing Information Protocol", RFC 1058, Rutgers
- University, June 1988.
-
- [2] Deering, S., "Host Extensions for IP Multicasting", RFC 1054,
- Stanford University, May 1988.
-
- [3] Deering, S., "Multicast Routing in Internetworks and Extended
- LANs", SIGCOMM Summer 1988 Proceedings, August 1988.
-
- [4] Callon, R., "A Comparison of 'Link State' and 'Distance
-
-
-
- Waitzman, Partridge & Deering [Page 23]
-
- RFC 1075 Distance Vector Multicast Routing Protocol November 1988
-
-
- Vector' Routing Algorithms", DEC, November 1987.
-
- [5] Postel, J., "Internet Protocol", RFC 791, USC/Information
- Sciences Institute, September 1981.
-
- [6] Mills, D., "Toward an Internet Standard Scheme for
- Subnetting", RFC 940, University of Delaware, April 1985.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Waitzman, Partridge & Deering [Page 24]
-